package modelo;

import java.util.ArrayList;
import java.util.List;
import java.util.Date;

import bean.FacturaVO;
import bean.ItemFacturaVO;

public class Factura {

	private int nroFactura;
	private Date fecha;
	private Pedido pedido;
	private float total;
	private String observaciones;
	private Cliente cliente;
	private List<ItemFactura> items = new ArrayList<ItemFactura>();

	public int getNroFactura() {
		return nroFactura;
	}

	public void setNroFactura(int nroFactura) {
		this.nroFactura = nroFactura;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}

	public float getTotal() {
		return total;
	}

	public void setTotal(float total) {
		this.total = total;
	}

	public String getObservaciones() {
		return observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}


	public List<ItemFactura> getItems() {
		return items;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public void setItems(List<ItemFactura> items) {
		this.items = items;
	}

	public void agregarItem(Rodamiento r, int cant, float precio ) {
		ItemFactura item = new ItemFactura();
		item.setRodamiento(r);
		item.setCantidad(cant);
		item.setPrecio(precio);
		items.add(item);

	}

	public float calcularDescuento() {
		return 0;

	}
	
	public float calcularSubtotal(){
		
		float total = 0; 
		for(ItemFactura i:items)
		total = total + i.calcularSubtotal();
		return total;
		
	}
	
	public float calcularSubtotalConDesc(){
		
		
		return this.calcularSubtotal()* (1- this.getPedido().getCotizacion().getDescuentoVip()) ;
		
	}
	
	public float calcularIva(){
		
		return this.calcularSubtotalConDesc()* (float)0.21;
		
		
	}

	public float calcularTotal() {
		
		return this.calcularSubtotalConDesc()+ calcularIva() ;

	}
	
	public List<ItemFacturaVO> itemsToVO(){
		
		List<ItemFacturaVO> itemsVO = new ArrayList<ItemFacturaVO>();
		for(ItemFactura i :items)
			itemsVO.add(i.toVO());
		return itemsVO;
		
	}
	
	public FacturaVO toVO(){
		
		FacturaVO fVO = new FacturaVO();
		fVO.setFecha(this.fecha);
		fVO.setItems(this.itemsToVO());
		fVO.setNroFactura(this.nroFactura);
		fVO.setObservaciones(this.observaciones);
		fVO.setCliente(this.getCliente().toVO());
		fVO.setPedido(this.getPedido().toVO());
		fVO.setTotal(this.calcularTotal());
		fVO.setDescuento(this.getPedido().getCliente().getDescuentoVip());
		fVO.setSubtotal(this.calcularSubtotal());
		fVO.setIva(this.calcularIva());
		fVO.setSubtotalConDesc(this.calcularSubtotalConDesc());
		
		return fVO;
		
		
		
	}
}
